package producto;

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;


public class Pedido extends Observable{
	
	List<IProducto> listaDeProductos;
	
	public Pedido(){
		listaDeProductos = new ArrayList<IProducto>();
	}
	

	public void agregar(IProducto unProducto){
		getListaDeProductos().add(unProducto);
	}
	
	public double precioDeVentaTotal() {
		double total=0;
		for (IProducto o : getListaDeProductos()){
			total+=o.precioUnitarioDeVenta();
		}
		return total;
	}
	
	public void descontarStock(){
		for (IProducto o : getListaDeProductos()){
			o.decrementarStock();
		}
	}


	public List<IProducto> getListaDeProductos() {
		// TODO Auto-generated method stub
		return this.listaDeProductos;
	}
	
	public void retornarProductos(){
		for(IProducto o : getListaDeProductos()){
			o.incrementarStock();
		}
		//this.getListaDeProductos().clear();
	}
	
	public boolean elementosSinStock(){
		
		List<Boolean> answers = new ArrayList<Boolean>();
		Pedido copia = new Pedido();

		for (IProducto o : getListaDeProductos()){
			copia.agregar(o.duplicar());
		}
		for (IProducto o : copia.getListaDeProductos()){
			answers.add(o.getCantidadEnStock()==0);
			o.decrementarStock();
		}
		return answers.contains(true);
	}


	public void obesrvarProductosSinStock() {
		// TODO Auto-generated method stub
		
	}


	public Pedido duplicar() {
		// TODO Auto-generated method stub
		// FaltaTEST!
		Pedido copia = new Pedido();
		for (IProducto o : this.getListaDeProductos()){
			copia.agregar(o.duplicar());
		}
		return copia;
	}



}
